package com.yanxx.codegenerator;

/**
 * 编码生成器接口
 * 提供业务编号的生成和回收功能
 */
public interface CodeGenerator {
    
    /**
     * 生成下一个可用的业务编号
     *
     * @return 业务编号
     */
    String generate();
    
    /**
     * 回收未使用的业务编号
     *
     * @param code 需要回收的业务编号
     * @return 回收是否成功
     */
    boolean recycle(String code);
    
    /**
     * 确认业务编号已使用（已落库）
     * 确认后的编号将不再被回收
     *
     * @param code 已使用的业务编号
     * @return 确认是否成功
     */
    boolean confirm(String code);
    
    /**
     * 获取当前可用的业务编号数量
     *
     * @return 可用编号数量
     */
    int getAvailableCount();
    
    /**
     * 初始化编码生成器
     * 可用于加载持久化的编号数据
     */
    void initialize();
    
    /**
     * 关闭编码生成器
     * 可用于持久化编号数据
     */
    void shutdown();
}